<?php
/**
 * 
 * \file ConnectionBDD.php
 * \author Mualig
 * \version 0.2
 * \date 16 avril 2009
 *
 */

/** 
 * \class Connector_Sql
 * \brief Classe contenant toutes les fonctions relatives à la BDD.
 * 
 * Cette classe contient : 
 *		- toutes les informations et les fonctions relatives à la connection à la base de données
 *		- toutes les fonctions de recherche dans la base de données
 *
 */
class Connector_Sql {

	/*
	* Propriétés
	*/

	/* Nom du serveur à utiliser
	 * @var $serveur string contenant le nom du serveur a utiliser pour se connecter à la base de données.
	 */
	private $serveur = 'localhost'; //Nom du serveur
	/*
	 * @var $user string contenant le nom d'utilisateur.
	 */
	private $user = 'root';		//Utilisateur
	private $pass = 'root';     	//MDP	
	private $db =  'ABC PRO';	//Nom de la bdd
	

	/*
	*  Methodes
	*/

	/** \fn __construct ()
	 * \brief Constructeur de la classe
	 * 
	 * @return Pas de retour.
	 */
	public function __construct () { }


	/** \fn connect ()
	 * \brief Connexion a la BDD.
	 * 
	 * Cette fonction permet de se connecter à la base de données MySQL 
	 * et de sélectionner la bonne base en utilisant la fonction mysql_connect et la fonction select_db. 
	 * Si la connection échoue un message d'erreur est envoyé.
	 * 
	 * @return Pas de retour.
	 */
	public function connect (){
		mysql_connect($this->serveur,$this->user,$this->pass)or die('Connexion imposible a la BDD');
		mysql_select_db($this->db);
	}


	/** \fn deconnect () 
	 * \brief Déconnexion de la BDD.
	 * 
	 * Cette fonction ferme la connection à la base de données en utilisant la fonction mysql_close.
	 * @return Pas de retour.
	 */
	public function deconnect(){
		mysql_close();
	}
	
	
	/*
	 *  Fonctions concernant les recherches dans la BDD
	 */
	
	/**
	 * \brief Recherche dans la table compte_unix.
	 * 
	 * Cette fonction effectue une recherche dans la table compte_unix en comparant $recherce au login de tous les utilisateurs 
	 * et affiche ceux qui correspondent.
	 * 
	 * @param $recherche string contenant le login à rechercher
	 * @return Pas de retour.
	 */
	public function recherche_cu ($recherche) {
		
		//recherche dans la table compte_unix de tous les logins correspondant à $recherche
		$qcu = "select login from compte_unix where login like '$recherche'";
		$rcu = mysql_query($qcu);
		
		//si la liste des résultats n'est pas vide
		if ( mysql_num_rows($rcu) >= 1 ) {
			
			//affichage du titre
			echo "<center> <b> <h1> Compte(s) Unix </h1> </b> </center>";
			echo "<p> Resultat de la recherche dans compte unix</p>";
			
			//affichage de tous les résultats
			while($rowcu = mysql_fetch_assoc($rcu) ) {
				echo "<a href='affichage_cu.php?login=".$rowcu['login']."' > ".$rowcu['login']."</a> <br> \n";
			}
			
			$this->trait();
		}	
	}
	
	
	/**
	 * \brief Recherche dans la table client.
	 * 
	 * Cette fonction effectue une recherche dans la table compte_unix en comparant $recherce a l'identifiant, 
	 * ainsi qu'à la dénomination de tous les clients et affiche ceux qui correspondent.
	 * 
	 * @param $recherche string contenant l'identifiant ou la dénomination à rechercher
	 * @return Pas de retour.
	 */
	public function recherche_c ($recherche) {
		
		//recherche dans la table client de tous les id correspondant à $recherche
		$q1 = "select id_c, denomination_c from client where id_c like '$recherche'";
		$r1 = mysql_query($q1);
		
		//recherche dans la table client de toutes les dénominations correspondant à $recherche
		$q2 = "select id_c, denomination_c from client where denomination_c like '$recherche'";
		$r2 = mysql_query($q2);
		
		
		//si il y a des résultats dans au moins une liste
		if ( mysql_num_rows($r1) >= 1 or mysql_num_rows($r2) >= 1 ) {
			
			//affichage du titre
			echo "<center> <b> <h1> Client(s) </h1> </b> </center>";
			echo "<p> Resultat de la recherche dans la table client</p>";
			
			//affichage de tous les résultats de la 1ere requète
			while($row = mysql_fetch_assoc($r1) ) {
				echo "<a href='affichage_c.php?id=".$row['id_c']."' > ".$row['denomination_c']."</a> <br> \n";
			}
			
			//affichage de tous les résultats de la 2eme requète
			while($row = mysql_fetch_assoc($r2) ) {
				echo "<a href='affichage_c.php?id=".$row['id_c']."' > ".$row['denomination_c']."</a> <br> \n";
			}
			
			$this->trait();
		
		}
		
	}
	
	
	/**
	 * \brief Recherche dans la table revendeur.
	 * 
	 * Cette fonction effectue une recherche dans la table revendeur en comparant $recherce a l'identifiant, 
	 * ainsi qu'à la dénomination de tous les revendeurs et affiche ceux qui correspondent.
	 * 
	 * @param $recherche string contenant l'identifiant ou la dénomination à rechercher
	 * @return Pas de retour.
	 */
	public function recherche_r ($recherche) {
		
		//recherche dans la table revendeur de tous les id correspondant à $recherche
		$q1 = "select id_r, denomination_r from revendeur where id_r like '$recherche'";
		$r1 = mysql_query($q1);
		
		//recherche dans ;a table revendeur de toutes les dénominations correspondant à $recherche
		$q2 = "select id_r, denomination_r from revendeur where denomination_r like '$recherche'";
		$r2 = mysql_query($q2);
		
		
		//si il y a des résultats dans au moins une liste
		if ( ( mysql_num_rows($r1) >= 1) or ( mysql_num_rows($r2) >= 1) ) {
			
			//affichage du titre
			echo "<center> <b> <h1> Revendeur(s) </h1> </b> </center>";
			echo "<p> Resultat de la recherche dans la table revendeur </p>";
			
			//affichage de tous les résultats de la 1ere requète
			while($row = mysql_fetch_assoc($r1) ) {
				echo "<a href='affichage_r.php?id=".$row['id_r']."' > ".$row['denomination_r']."</a> <br> \n";
			}

			//affichage de tous les résultats de la 2eme requète
			while($row1 = mysql_fetch_assoc($r2) ) {
				echo "<a href='affichage_r.php?id=".$row1['id_r']."' > ".$row1['denomination_r']."</a> <br> \n";
			}
			
			$this->trait();
		
		}

	}
	
	
	/**
	 * \brief Recherche dans la table source.
	 * 
	 * Cette fonction effectue une recherche dans la table source en comparant $recherce a l'identifiant, 
	 * ainsi qu'à la dénomination de toutes les sources et affiche ceux qui correspondent.
	 * 
	 * @param $recherche string contenant l'identifiant ou la dénomination à rechercher
	 * @return Pas de retour.
	 */
	public function recherche_s ($recherche) {
		
		//recherche dans la table source de tous les id correspondant à $recherche
		$q1 = "select id_s, denomination_s from source where id_s like '$recherche'";
		$r1 = mysql_query($q1);
		
		//recherche dans la table source de toutes les dénominations correspondant à $recherche
		$q2 = "select id_s, denomination_s from source where denomination_s like '$recherche'";
		$r2 = mysql_query($q2);
		
		//si il y a des résultats dans au moins une liste
		if ( mysql_num_rows($r1) >= 1 or mysql_num_rows($r2) >= 1 ) {
			
			//affichage du titre
			echo "<center> <b> <h1> Source(s) </h1> </b> </center>";
			echo "<p> Resultat de la recherche dans la table source </p>";
			
			//affichage de tous les résultats de la 1ere requète
			while($row = mysql_fetch_assoc($r1) ) {
				echo "<a href='affichage_s.php?id=".$row['id_s']."' > ".$row['denomination_s']."</a> <br> \n";
			}
			
			//affichage de tous les résultats de la 2eme requète
			while($row = mysql_fetch_assoc($r2) ) {
				echo "<a href='affichage_s.php?id=".$row['id_s']."' > ".$row['denomination_s']."</a> <br> \n";
			}
			
			$this->trait();
		
		}
		
	}
	
	
	/**
	 * \brief Recherche dans la table contact_revendeur.
	 * 
	 * Cette fonction effectue une recherche dans la table contact_revendeur en comparant $recherce a l'identifiant, 
	 * ainsi qu'à la dénomination de toutes les sources et affiche ceux qui correspondent.
	 * 
	 * @param $recherche string contenant le nom ou le prénom à rechercher
	 * @return Pas de retour.
	 */
	public function recherche_cr ($recherche) {
		
		//recherche dans la table contact_revendeur de tous les nom correspondant à $recherche
		$q1 = "select id_cr, nom, prenom from contact_revendeur where nom like '$recherche'";
		$r1 = mysql_query($q1);
		
		//recherche dans la table contact_revendeur de tous les nom correspondant à $recherche
		$q2 = "select id_cr, nom, prenom from contact_revendeur where prenom like '$recherche'";
		$r2 = mysql_query($q2);
		
		//si il y a des résultats dans au moins une liste
		if ( mysql_num_rows($r1) >= 1 or mysql_num_rows($r2) >= 1 ) {
			
			//affichage du titre
			echo "<center> <b> <h1> Contact(s) revendeur </h1> </b> </center>";
			echo "<p> Resultat de la recherche dans la table contact_revendeur </p>";
			
			//affichage de tous les résultats de la 1ere requète
			while($row = mysql_fetch_assoc($r1) ) {
				echo "<a href='affichage_cr.php?id=".$row['id_cr']."' > ".$row['nom']." ".$row['prenom']."</a> <br> \n";
			}
			
			//affichage de tous les résultats de la 2eme requète
			while($row = mysql_fetch_assoc($r2) ) {
				echo "<a href='affichage_cr.php?id=".$row['id_cr']."' > ".$row['nom']." ".$row['prenom']."</a> <br> \n";
			}
			
			$this->trait();
			
		}
	}
	
	
	/**
	 * \brief Recherche dans la table serveur.
	 * 
	 * Cette fonction effectue une recherche dans la table serveur en comparant $recherce a l'identifiant, 
	 * ainsi qu'à la dénomination de toutes les sources et affiche ceux qui correspondent.
	 * 
	 * @param $recherche string contenant le nom du serveur à rechercher
	 * @return Pas de retour.
	 */
	public function recherche_serv ($recherche) {
		
		//recherche dans la table serveur de tous les nom correspondant à $recherche
		$q = "select nom_serveur from serveur where nom_serveur like '$recherche'";
		$r = mysql_query($q);

		//si il y a des résultats dans la liste
		if ( mysql_num_rows($r) >= 1 ) {
			
			//affichage du titre
			echo "<center> <b> <h1> Serveur(s) </h1> </b> </center>";
			echo "<p> Resultat de la recherche dans la table serveur</p>";
			
			//affichage des résultats de la requète
			while($row = mysql_fetch_assoc($r) ) {
				echo "<a href='affichage_serv.php?nom=".$row['nom_serveur']."' > ".$row['nom_serveur']." </a> <br> \n";
			}
			
			$this->trait();
			
		}
	}
	
	//Recherche d'un compte
	/**
	 * \brief Effectue les recherches dans la base de données.
	 * 
	 * Cette fonction appelle les différentes fonction de recherche par rapport aux paramètres qui lui sont passés
	 * 
	 * @param $recherche string contenant le mot ou nombre à rechercher
	 * @param $origine string contenantle nom de la table dans laquelle la recherche est à effectuée
	 * @return Pas de retour.
	 */
	public function resu_recherche ($recherche,$origine) {
		
		//suivant la valeur de $origine
		switch ($origine) {
			
			//cas où $origine = "tous"
			case "tous" :
				//on recherche dans toutes les tables
				$this->recherche_cu($recherche);
				$this->recherche_c($recherche);
				$this->recherche_r($recherche);
				$this->recherche_s($recherche);
				$this->recherche_cr($recherche);
				$this->recherche_serv($recherche);
				break;
				
			//cas où $origine = "compte"
			case "compte" : 
				//on recherche dans la table compte_unix
				$this->recherche_cu($recherche);
				break;
				
			//cas où $origine = "source"
			case "source" :
				//on recherche dans la table source
				$this->recherche_s($recherche);
				break;
				
			//cas où $origine = "revendeur"
			case "revendeur" :
				//on recherche dans la table revendeur
				$this->recherche_r($recherche);
				break;
				
			//cas où $origine = "client"
			case "client" :
				//on recherche dans la table client
				$this->recherche_c($recherche);
				break;
				
			//cas où $origine = "contact"
			case "contact" :
				//on recherche dans la table contact_revendeur
				$this->recherche_cr($recherche);
				break;
				
			//cas où $origine = "serveur"
			case "serveur" :
				//on recherche dans la table serveur
				$this->recherche_serv($recherche);
				break;
				
		}		
	}
	
	
	/**
	 * \brief Ajoute un n-uplet dans la table compte_unix.
	 * 
	 * Cette fonction rajoute une occurrence dans la table compte_unix avec pour valeur les paramètres qui lui sont passés en entrée 
	 * et retourne un booléen TRUE si l'insertion a réussit FALSE sinon.
	 * 
	 * @param $login string contenant le login du nouveau compte, il doit être unique.
	 * @param $password string contenant le mot de passe du compte.
	 * @param $origine string contenant le nom de la source ou du revendeur ayant apporté le client.
	 * @param $createur string contenant le nom de la personne ayant créée le compte.
	 * @param $path string contenant le path du compte client.
	 * @param $quota int contenant le volume à allouer au compte.
	 * @return $r bool contenant le résultat de la création du compte.
	 */
	public function ajout_compte ($login,$password,$origine,$createur,$path,$quota) {
		
		//requete SQL permettant de créer un nouveau compte
		//date('Y-m-d') correspond à la date du jour au format Anglais et 1 correspond à l'état du compte (actif)
		$q = "insert into compte_unix values ('$login','$password','$origine','date('Y-m-d')','$createur','$path',$quota,1)";
		//éxécution de la requète
		$r = mysql_query($q);
		
		return $r;
	}
	
	
	/**
	 * \brief Ajoute un n-uplet dans la table source.
	 * 
	 * Cette fonction rajoute une occurrence dans la table source avec pour valeur les paramètres qui lui sont passés en entrée 
	 * et retourne un booléen TRUE si l'insertion a réussit FALSE sinon.
	 * 
	 * @param $denomination string contenant la dénomination de la source.
	 * @param $commentaires string contenant les commentaires sur la source.
	 * @param $login string contenant le login du compte unix de la source (Foreign Key sur compte_unix).
	 * @param $siret int contenant le SIRET de la source (Foreign Key sur coordonnées).
	 * @return $r bool contenant le résultat de la création de la source.
	 */
	public function ajout_source ($denomination,$commentaires,$login,$siret) {
		
		//requète SQL permettant de créer une nouvelle source
		//NULL correspond à l'id_s qui est généré automatiquement par la BDD
		$q = "insert into source values (NULL,'$denomination','$commentaire','$login','$siret')";
		//éxécution de la requète
		$r = mysql_query($q);
		
		return $r;
	}
	
	
	/**
	 * * \brief Ajoute un n-uplet dans la table revendeur.
	 * 
	 * Cette fonction rajoute une occurrence dans la table revendeur avec pour valeur les paramètres qui lui sont passés en entrée 
	 * et retourne un booléen TRUE si l'insertion a réussit FALSE sinon.
	 * 
	 * @param $denomination strinf contenant la dénomination du revendeur.
	 * @param $volume int contenant le volume vendu au revendeur.
	 * @param $commentaire string contenant les commentaires sur le revendeur.
	 * @param $login string contenant le login du compte unix du revendeur (Foreign Key sur compte_unix).
	 * @param $id_s int contenant l'identifiant de la source liée au revendeur (Foreign Key sur source).
	 * @param $siret int contenant le SIRET de la revendeur (Foreign Key sur coordonnées).
	 * @return $r bool contenant le résultat de la création du revendeur.
	 */
	public function ajout_revendeur ($denomination,$volume,$commentaire,$login,$id_s,$siret) {
		
		//requète SQL permettant de créer un nouveau revendeur
		//NULL correspond à l'id_r qui est généré automatiquement par la BDD
		$q = "INSERT INTO revendeur VALUES (NULL,'$denomination','$volume','$commentaire','$login','$id_s','$siret')";
		//éxécution de la requète
		$r = mysql_query($q);
		
		return $r;
	}
	
	/**
	 * \brief Ajoute un n-uplet dans la table revendeur.
	 * 
	 * Cette fonction rajoute une occurrence dans la table client avec pour valeur les paramètres qui lui sont passés en entrée 
	 * et retourne un booléen TRUE si l'insertion a réussit FALSE sinon.
	 * 
	 * @param $denomination string contenant la dénomination du client.
	 * @param $date date à laquelle la demande de création du compte a été effectuée.
	 * @param $volume int contenant le volume restant au client (à la création $volume correspondera au quota du compte unix).
	 * @param $commentaires string contenant les commentaires sur le client.
	 * @param $id_r int contenant l'identifiant du revendeur lié au client (Foreign Key sur revendeur).
	 * @param $siret int contenant le SIRET du client (Foreign Key sur coordonnées).
	 * @param $serveur string contenant le nom du serveur sur lequel le client est sauvegardé (Foreign Key sur serveur).
	 * @return $r bool contenant le résultat de la création de la source.
	 */
	public function ajout_client ($denomination,$date,$volume,$commentaires,$id_r,$siret,$serveur) {
		
		//requète SQL permettant de créer un nouveau client
		//NULL correspond à l'id_c qui est généré automatiquement par la BDD, 
		//le 2eme NULL à la date de la dernière synchronisation et 0 à la variable erreur
		$q = "INSERT INTO client VALUES (NULL, '$denomination', '$date', NULL, '$volume', 0, '$commentaires', '$id_r', '$siret', '$serveur')";
		//éxécution de la requète
		$r = mysql_query($q);
		
		return $r;
	}
	
	/**
	 * \brief Ajoute un n-uplet dans la table coordonnees.
	 * 
	 * Cette fonction rajoute une occurrence dans la table coordonnees avec pour valeur les paramètres qui lui sont passés en entrée 
	 * et retourne un booléen TRUE si l'insertion a réussit FALSE sinon.
	 * 
	 * @param $siret int contenant le SIRET de l'entreprise.
	 * @param $adresse1 string contenant la 1ere ligne de l'adresse de l'entreprise.
	 * @param $adresse2 string contenant la 2eme ligne de l'adresse de l'entreprise.
	 * @param $adresse3 string contenant la 3eme ligne de l'adresse de l'entreprise.
	 * @param $cp int contenant le code postal de l'entreprise.
	 * @param $ville string contenant le nom de la ville.
	 * @param $mail string contenant l'adresse e-mail.
	 * @param $tel int contenant le numéro de téléphone de l'entreprise.
	 * @return $r bool contenant le résultat de la création de la source.
	 */
	public function ajout_coordonnees ($siret,$adresse1,$adresse2,$adresse3,$cp,$ville,$mail,$tel) {
		
		//requète SQL permettant de créer une nouvelle entrée dans la table coordonnées
		$q = "INSERT INTO coordonnees VALUES ('$siret','$adresse1','$adresse2','$adresse3','$cp','$ville','$mail','$tel')";
		//exécution de la requète
		$r = mysql_query($q);
		
		return $r;
	}
	
	/**
	 * 
	 * \brief Ajoute un n-uplet dans la table contact_revendeur.
	 * 
	 * Cette fonction rajoute une occurrence dans la table contact_revendeur avec pour valeur les paramètres qui lui sont passés en entrée 
	 * et retourne un booléen TRUE si l'insertion a réussit FALSE sinon.
	 * 
	 * @param $nom string contenant le nom du contact revendeur.
	 * @param $prenom string contenant le prenom du contact revendeur.
	 * @param $adresse1 string contenant la 1ere ligne de l'adresse de l'entreprise ou du contact.
	 * @param $adresse2 string contenant la 2eme ligne de l'adresse de l'entreprise ou du contact.
	 * @param $adresse3 string contenant la 3eme ligne de l'adresse de l'entreprise ou du contact.
	 * @param $cp int contenant le code postal de l'entreprise ou du contact.
	 * @param $ville string contenant le nom de la ville.
	 * @param $mail string contenant l'adresse e-mail du contact.
	 * @param $tel int contenant le numéro de téléphone du contact.
	 * @param $commentaires string contenant les commentaires sur le contact.
	 * @return $r bool contenant le résultat de la création de la source.
	 */
	public function ajout_contact ($nom,$prenom,$adresse1,$adresse2,$adresse3,$cp,$ville,$mail,$tel,$commentaires) {
		
		//requète SQL permettant de créer un nouveau contact revendeur
		//NULL correspond à l'id du contact qui est généré automatiquement par la BDD
		$q = "INSERT INTO contact_revendeur 
		VALUES (NULL,'$nom','$prenom','$adresse1','$adresse2','$adresse3','$cp','$ville','$mail','$tel','$commentaires')";
		//exécution de la requète
		$r = mysql_query($q);
		
		return $r;
		
	}
	
	/**
	 * \brief Ajoute un n-uplet dans la table serveur.
	 * 
	 * Cette fonction rajoute une occurrence dans la table serveur avec pour valeur les paramètres qui lui sont passés en entrée 
	 * et retourne un booléen TRUE si l'insertion a réussit FALSE sinon.
	 * 
	 * @param $nom_serv string
	 * @param $admin
	 * @param $ip
	 * @return unknown_type
	 */
	public function ajout_serveur ($nom_serv,$admin,$ip) {
		
		$q = "INSERT INTO serveur VALUES ('$nom_serv','$admin','$ip',NULL,0,NULL,NULL,)";
		$r = mysql($q);	
		
		return $r;
	}
	
	
	/**
	 * \brief Trace un trait
	 * 
	 * Cette fonction trace un trait simple la où elle est implanté.
	 * 
	 * @return Pas de retour
	 */
	public function trait () {
		echo "<p></p>";
	}
	
	
}

?>
